commit message
保持容易閱讀
具有描述性,不要假設
描述為什麼做出改變,而不只是改變什麼
第一行內容最為重要
就像電子郵件的標題
不要假設閱讀者了解正在修改的原始問題
不要假設閱讀者可以使用外部網路服務
統整問題報告與相關討論
不要假設程式碼可以不言自明
但不必再重複已寫在程式碼裡的註解
使用 bug ID
講述完整故事
by applying this...
不要過度冗長
commit message
風格:Markup syntax、wrap margins、文法、大寫習慣、符號慣例
內容:需要的資訊
Metadata:可參照的 issue tracking IDs、pull request 號碼
七條規則
1. 用一行空白分隔標題與內容
2. 限制標題最多只有50字元
3. 標題開頭要大寫
4. 標題不以句點結尾
5. 以祈使句撰寫標題
6. 內文每行最多72字
7. 用內文解釋what以及why vs. how
template
code:template
Header: <type>(<scope>): <subject>
- type: 代表 commit 的類別:feat, fix, docs, style, refactor, test, chore,必要欄位
- scope 代表 commit 影響的範圍,例如資料庫、控制層、模板層等等,視專案不同決定,可選欄位
- subject 代表此 commit 的簡短描述,不要超過 50 個字元,結尾不要加句號,必要欄位
Body: 72-character wrapped. This should answer:
- Body 部份是對本次 Commit 的詳細描述,可以分成多行,每一行不要超過 72 個字元
- 說明程式碼變動的項目與原因,還有與先前行為的對比
Footer:
- 填寫任務編號(如果有的話).
- BREAKING CHANGE(可忽略),記錄不兼容的變動,
以 BREAKING CHANGE: 開頭,後面是對變動的描述、以及變動原因和遷移方法
type
Feat: 新增/修改功能
feature
Fix: 修補 bug
bug fix
Docs: 文件
documentation
Style: 格式
不影響程式碼運行的變動
white-space, formatting, missing semt colons, etc
非新增功能,亦非修補 bug 的程式碼變動
Perf: 改善效能
A code change that improves performance
Test: 增加測試
Adding missing tests or correcting existing tests
chore: 程式建構或輔助工具變動
maintain
revert: 撤銷回覆先前的 commit
例如:revert: type(scope): subject (回覆版本:xxxx)
相關連結